//语音识别二次封装
//1.封装一个语音识别客户端类
//  1.在构造函数中,输入语音识别平台的key的相关信息
//  2.提供一个语音识别的接口(输入参数就是语音数据),返回值转换后的文字
#pragma once
#include "../third/include/aip-cpp-sdk-4.16.7/speech.h"
#include"logger.hpp"
class ASRClient
{
public:
    using ptr = std::shared_ptr<ASRClient>;
    ASRClient(const std::string& app_id,const std::string& app_key,const std::string& secret_key)
        :_client(app_id,app_key,secret_key)
    {}
    std::string recognize(const std::string& speech_data,std::string &err)
    {
        Json::Value result = _client.recognize(speech_data, "pcm", 16000, aip::null);
        if(result["err_no"].asInt() != 0)
        {
            LOG_ERROR("语音识别失败：{}", result["err_msg"].asString());
            err = result["err_msg"].asString();
            return std::string();
        }
        std::cout<<result["result"][0].asString();
        return result["result"][0].asString();
    }
private:
    aip::Speech _client;
};